$webwork.htmlEncode($page.space.name) : 7 Releasing
This page last changed on Jan 04, 2008 by groldan.
Create a GeoServer Release This is a guide to making a GeoServer release available to the general project. The GeoServer project very much believes in the mantra of 'release early, release often'. Our users should have our latest developments as soon as possible, as their feedback and involvement is significant part of our success. This release guide is perhaps more comprehensive than needed, but we feel it is important to guide developers through the whole process. Due to the distributed nature of the project you will need a lot of permissions on different systems to put a release out. If you are attempting a release you should be in close contact with a project admin who can help guide you through the process and give you the appropriate permissions.
PrerequisitesCheck you do have the following before going on, or you won't be able to perform the release:
Checkout from SubversionEnsure you have an up-to-date source tree by checking out from scratch or performing an update. Check Geotools dependenciesGeoserver final releases are released against a stable version of Geotools. This means that either:
On the contrary, it's ok to release a milestone or an RC against a geotools SNAPSHOT of a stable branch (try not to release release against trunk or an unstable branch). At the same time, check if the epsg-hsql module contains the latest EPSG database release. If not, and you have to make a geotools release anyways, check with the module mantainer if it's possible to have an update to the latest one. On the contrary, if you're building against a stable release, don't bother making a new one just for updating the epsg provider (given that a geotools release takes at least half a day). In either case, run CITE tests. If you find that more bugfixes are needed, commit them to the stable branch and declare a code freeze and the need for a new stable release on the geotools developer mailing list, and keep the freeze until all CITE tests do pass and you have a new geotools stable release that Geoserver can use. If you are building on a machine with no graphical user interface some tests will fail. You can get around this by appending -Djava.awt.headless=true to your mvn commands. TestingThe first step in a release is testing. This step should actually probably occur between every step of the release, as past experience has shown that testing each step of the way will definitely catch a few errors, as the project and the release process are both complex. We recommend checking out geoserver from svn in a completely new directory on your machine. There are a number of different tests that should be performed. Build and unit testMake sure the main pom.xml refers to the right Geotools version, and that the Geoserver version is the one you're releasing. <properties> <gs.version>1.4.0-RC2</gs.version> <gt.version>2.2.2-SNAPSHOT</gt.version> </properties> Do a full build (mvn clean install), which will run unit tests along the way. If a test fails, it must be fixed before releasing. Tag geotools so you know what revision geoserver was released against. Ideally you would just do a full geotools release as well. Hand TestingThis simply means try out GeoServer and observe the results on a few tests. To do this:
If any error is found, it must be fixed and the build and test process restarted. Cite Tests
The cite tests will take at least a up to an hour to run all the way, so we recommend working on some documentation or the readme file while they run. The tests are available at http://cite.opengeospatial.org/. To run them you will need a public instance of GeoServer outside of a firewall. The unit tests and hand tests should be run at most every step of the way, as often as possible, just to make sure any little changes did not cause things to go wrong. On the day of a release the cite tests should also be run several times. For a point release all cite tests must pass. For alpha and beta releases they do not all need to pass, but a good majority is recommended, since they represent the core functionality of GeoServer and users expect those operations to work. GeoServer should also be tested on several servlet containers and operating systems. We have been mainly supporting Tomcat and Resin, on both Windows and Linux. Testing different versions of Linux and Windows is probably a bit tough, but at each one version of each should be tested. We recommend testing Tomcat 4 and 5 and Resin 2 and 3, since there are many users of both. If one works the other should as well, it is just a good idea to make sure. Yes, we know that all these tests may seem a bit ridiculous, but maintaining a high quality of releases is very important to the success of GeoServer, and generally the tests will reveal a few errors that were not present before. And even if none are found it allows you to feel much more confident in the quality of the release. Create a READMEThe README file ( located in the release directory ) must be updated for every release. When writing the README follow the following guidelines:
Example README: README.txt GeoServer 1.4.0 --------------- Major features / improvements of this release include: - new SLD editor - WMS PutStyles / GetStyles support - WFS filter parsing bug fix Special thanks to the following people for their contributions: - Joe Schmo: WFS filter parsing patch The issue log for this release can be found here: http://jira.codehaus.org/secure/IssueNavigator.jspa?reset=true&pid=10311&fixfor=11555 Based on Geotools 2.2.0 (tag = 2.2.0). Update GeoServer VersionUpdate all files which contain a reference to the old version number. A handy unix command for doing so is: find . -exec sed -i 's/1.4.0/1.4.1/g' {} \; On Windows you can do the same using, for example, the free "Simple Search and Replace" utility from RJL software. The set of files to be updated include:
Export Documentation from ConfluenceYou should now head over to the Confluence Wiki and export the docs:
Build Release Artifacts
A target/release directory should have been created which contains the following artifacts: geoserver-<version>-bin.zip geoserver-<version>-javadoc.zip geoserver-<version>-src.zip geoserver-<version>-war.zip geoserver-<version>-doc.zip
Create the Installer ( Windows Platform Only )In order to create the windows installer, you will need to download and install the Nullsoft Scriptable Install System (NSIS).
Upon successful creation of the installer you should see the following: In your temporary directory, you should see a "geoserver-<version>.exe"! Tag and BranchCommit any remaining changes to your local checkout.
Test Runnable ArtifactsIt is always a good idea to "hand-test" the runnable artifacts. This includes:
Uploading to SourceForgeThe next step is to upload to sourceforge. They have great docs on how to perform the release. You will need release tech permissions to perform the release. For more information go to: http://sf.net/project/admin/editpackages.php?group_id=25086 Since they cover it so well we will just do the quick version: ftp to upload.sf.net/incoming - put all the files in release there. Yes, it's an anonymous ftp and you can upload whatever you want without control. Go to the webpage above, and click 'add release' next to geoserver. Call it geoserver-version.number - like geoserver-1.3.0 Upload the release notes - just use the readme as release notes. + Be sure to click to preserver the formating. Find the file in the list of files on upload.sf.net and add them to the release Set the processor to any, and the type to source.gz. Notify the users watching the release. Download your newly released file and test it again to make sure that everything is perfect. Uploading DataStore ExtensionsThe release process now generates the zip files for the data store extensions. These also need to be uploaded to Sourceforge. Make sure you release under the GeoServer Extensions project. Uploading to CodehausNext is to update the GeoServer jars in the Codehaus Maven Repository. This is done to allow other projects that depend on GeoServer through maven dependencies to be updated. Instructions here. Updating the WebsiteVarious places on the web need to be updated to reflect the fact that we released. Depending on the release it should go under the Latest or Stable pages. Create a new child page, select "Download" as the page template, and fill in the GeoServer release number and SourceForge release id. Update the JavadocsThe javadocs have been generated as part of the release process and they should be placed up on the web site. Accessing WebDav in Windows:In Windows Explorer, open up "My Network Places" Accessing WebDav in Linux with KDE:In Konqueror, enter "webdavs://dav.codehaus.org/geoserver" on the address bar Announcing the ReleaseThe final step is announcing to the world that you just put out a release. The first place is the geoserver homepage. You'll probably need admin status to add things to the web page. To get admin status you will need to sign up for an account on the web page, and then a current admin can up your privelages. The announcement should be a few paragraphs long, the first paragraph should give the basic information and direct links to the download. The following paragraphs should give more information and often a good little story. These sometimes get picked up by others, either from the homepage or the email list. So check them for typos and make them readable so someone else can grab a quick quote on the release. Then email the geoserver devel list, as many people are pretty much only on the list for release announcements. Next we generally update the freshmeat entry, as it gets quite a few hits as the release will appear on the front page. The story can also be added as a story on sourceforge, as sometimes those will get picked up and placed on the main sourceforge page. Variations or cut and paste from the homepage story work just fine. Any other places to announce it are fair game. Generally at least the freegis entry should be updated online, if a major release then the freegis list can be emailed directly. For 1.1.0 the story appeared on osdir.com and dev.java.net, but we did not do any direct announcing there, so I am not sure what the policy is on submitting stuff to them. |
![]() |
Document generated by Confluence on Jan 16, 2008 23:26 |